const arr = [1, 2, 3, 4, 5, 6];

const ajax = function (i) {
  return new Promise(function (resolve) {
    setTimeout(function () {
      resolve(i);
    }, 1000);
  });
};

// arr.forEach(async function (i) {
//   await ajax(i);
//   console.log(i);
// });

// var asyncIterable = {
//   [Symbol.asyncIterator]() {
//     return {
//       i: 0,
//       next() {
//         if (this.i < arr.length) {
//           return Promise.resolve({ value: this.i++, done: false });
//         }
//         //
//         // return Promise.resolve({ done: true });
//       }
//     };
//   }
// };

async function* asyncGenerator () {
  var i = 0;
  while (i < arr.length) {
    yield ajax(i);
    i++;
  }
}

(async function () {
  for await (const num of asyncGenerator()) {
    console.log(num);
  }
})();

// (async function() {
//   for await (num of asyncIterable) {
//     console.log(num);
//   }
// })();
